package java学习.实训.day03;

/**
 * **************
 * 项目名称: 蓝桥杯 <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦 <br/>
 * 创建时间: 2022/6/9 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
public class Test03 {
    /*
1.定义一个trainTicket类,包含 出发站,到达站,出发时间,身份证号,票价,作为号,车次等信息, 并为这个类提供一个打印火车票信息的方法
2.定义一个商品类,包含商品编号,商品名称,商品原价,商品折扣价,商品描述等信息,并提供一个打印商品信息的方法.
3. 定义一个 点 类.包含x坐标和y坐标. 提供一个打印点的坐标的方法, 以及一个计算当前点和另外一个点距离的方法.
4.定义一个 Rectangle类,包括一个点(左上角的点)和宽度,高度(点可以借助上题定义的点类). 长度
    提供如下方法: 计算矩形面积的方法,计算矩形周长的方法,计算矩形是否相交的方法（面试题）.
    计算矩形中心点的方法(返回值是一个点).
5. 附加题(选做):做一个分数类(五分之二,七分之三这样的分数). 包含分子和分母2个属性, 提供如下方法:
        计算当前分数与另外一个分数的和,
        计算当前分数和另外一个分数的差,
        计算当前分数和另外一个分数的乘积,计
        算当前分数和另外一个分数的商.
        实现分数的约分功能.
     */
    public static void main(String[] args) {
        Rectangle r1 = new Rectangle(new Point(1, 2), 2, 1);
        Rectangle r2 = new Rectangle(new Point(3, 2), 1, 2);
        System.out.println(r1.IsCross(r2));

    }


}
class Rectangle{
   private Point point;
   private double length;
   private double height;

    public Rectangle(Point point, double length, double height) {
        this.point = point;
        this.length = length;
        this.height = height;
    }

    public Point getO( ){
        double aox = point.getX()+length / 2;
        double aoy = point.getY()-height / 2;
        return new Point(aox,aoy);
    }

    public boolean IsCross(Rectangle rectangle){
       double case1 =  (rectangle.length + length)/2;
       double case2 =  (rectangle.height + height)/2;
        Point o1 = this.getO();
        Point o2 = rectangle.getO();
        double distance1 = Math.abs(o1.getX() - o2.getX());
        double distance2 = Math.abs(o1.getY() - o2.getY());

        if (distance1<=case1&&distance2<=case2){
           return true;
       }
       return false;

    }

    public double perimeter( ){
        return (length+height)/2;
    }

    public double area( ){
        return length*height;
    }

}
class Point{
   private   double x;
   private   double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public  double getDistance(Point point){
        double dis = Math.sqrt( (point.x-x) * (point.x-x) + (point.y-y) * (point.y-y) );
        return dis;
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }
}

class Goods{
    private int gid;
    private String gName;
    private double gPrice;
    private double gCurPrice;
    private String detail;

    @Override
    public String toString() {
        return "goods{" +
                "gid=" + gid +
                ", gName='" + gName + '\'' +
                ", gPrice=" + gPrice +
                ", gCurPrice=" + gCurPrice +
                ", detail='" + detail + '\'' +
                '}';
    }
}


class TrainTicket{
   //
    private int trano; //车次号
    private String sta;//出发地
    private String end;//目的地
    private String stime;//发车时间
    private String ID;
    private double price ;//价格
    private String seatnumb;//座位号

    @Override
    public String toString() {
        return "trainTicket{" +
                "trano='" + trano + '\'' +
                ", sta='" + sta + '\'' +
                ", end='" + end + '\'' +
                ", stime='" + stime + '\'' +
                ", ID='" + ID + '\'' +
                ", price=" + price +
                ", seatnumb='" + seatnumb + '\'' +
                '}';
    }
}
